#include <head.h>

/*
停车场问题

假设 嵌入式干不下去了 干保安了
然后管的是停车场

    一次只运行停5辆车 但是外面有1000台车等着 没台车需要停 2 秒 请你用信号量的方式来模拟这个问题
*/

sem_t my_sem;

// 全局变量   计数
int con = 1;

// 模拟车的停放时间
void * pthread_Func(void *arg)
{
    int id = *((int *)arg);

    // P操作 等待进入
    sem_wait(&my_sem);
    printf("我是 %d 车 我开始停了\n", id);
    sleep(3);
    // V操作 出车库
    sem_post(&my_sem);
    printf("我是 %d 车 我出去了\n", id);

    return 0;
}

int main(int argc, char const *argv[])
{
    // 初始化 信号量
    sem_init(&my_sem, 0, 10);

    // 创建线程
    pthread_t tid_1 = 0;
    pthread_t tid_2 = 0;

    // 数组
    int arr[20];

    for (size_t i = 0; i < 20; i++)
    {

        arr[i] = i;
        if (pthread_create(&tid_1, NULL, pthread_Func, (void *)&arr[i]) != 0)
        {
            printf("线程创建失败\n");
            return 1;
        }
        pthread_detach(tid_1);
    }

    while (1)
    {
        /* code */
    }
    

    // 销毁信号量
    sem_destroy(&my_sem);
    return 0;
}
